{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Better speed can be achieved with apex installed from https://www.github.com/nvidia/apex.\n"
     ]
    }
   ],
   "source": [
    "from gg_search import GoogleSearch\n",
    "ggsearch = GoogleSearch()\n",
    "from relevance_ranking import rel_ranking\n",
    "from reader import Reader\n",
    "reader = Reader()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "question = 'ai là người giàu nhất Việt Nam'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using google to find relevant documents"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Document 0\n",
      "Link: https://vi.wikipedia.org/wiki/T%E1%BB%A9_%C4%91%E1%BA%A1i_Ph%C3%BA_h%E1%BB%99\n",
      "Sample content:\n",
      " Tứ đại phú hộ (chữ Hán: 四大富戶) là cụm từ dân gian ở miền Nam Việt Nam đặt ra vào cuối thế kỷ XIX đến đầu thế kỷ XX để chỉ bốn người giàu nhất Sài Gòn, cũng như nhất miền Nam Kỳ lục tỉnh và cả Đông Dương thời bấy giờ. . Để dễ nhớ, dân gian có câu Nhất Sỹ, Nhì Phương, Tam Xường, Tứ Định [1]. . Đây là câu được nhiều người biết. . Tuy nhiên, về vị trí thứ tư, được dành cho một số đại phú hộ khác như Tứ Trạch, Tứ Hỏa hoặc Tứ Bưởi.\n",
      "\n",
      "Tên thật là Lê Phát Đạt (1841-1900), còn có tên gọi là Sỹ, về sau được .....\n",
      "\n",
      "------------------------------\n",
      "\n",
      "Document 1\n",
      "Link: https://www.bbc.com/vietnamese/world-47844894\n",
      "Sample content:\n",
      " ►► Bí mật trên tờ TIỀN Việt Nam: https://youtu.be/7TZQ83Cg4pY►► Cười cùng Trấn Thành: http://bit.ly/2XVOInt►► Top Video: https://bit.ly/322ffxB►► Miss World Việt Nam: https://youtu.be/CKZyBGdgS5A5 tỷ phú đô la người Việt Nam này là những người góp mặt trong danh sách những tỷ phú giàu nhất thế giới do tạp chí uy tín Forbes bình chọn.► Đăng ký để xem nhiều hơn: https://goo.gl/C6U3V9► Youtube: https://www.youtube.com/senvangtv----------------\n",
      "\n",
      "TOP 5 TỶ PHÚ GIÀU NHẤT VIỆT NAM - Tiền nhiều để làm gì .....\n",
      "\n",
      "------------------------------\n",
      "\n",
      "Document 2\n",
      "Link: https://www.youtube.com/watch?v=WDJXJd1-Vhc\n",
      "Sample content:\n",
      " Giá trị tài sản của ông Phạm Nhật Vượng đang không ngừng tăng lên qua các giai đoạn thống kê\n",
      "\n",
      "Thống kê của Forbes cho thấy, tính đến thời điểm 20/3/2019, giá trị tài sản của ông Phạm Nhật Vượng, người giàu nhất Việt Nam hiện nay đã đạt 8,1 tỷ USD, tăng 1,5 tỷ USD so với thời điểm tạp chí này công bố danh sách những người giàu nhất thế giới năm 2019 vào ngày 5/3 vừa qua.\n",
      "\n",
      "Tuy nhiên, với giá cổ phiếu VIC đã tăng mạnh trong hơn 1 năm qua và đang ở trong vùng đỉnh, khối tài sản của ông Phạm Nhật Vượ .....\n",
      "\n",
      "------------------------------\n",
      "\n",
      "Document 3\n",
      "Link: https://dantri.com.vn/kinh-doanh/choang-ngop-tai-san-nguoi-giau-nhat-viet-nam-sap-cham-nguong-10-ty-usd-20190320131450330.htm\n",
      "Sample content:\n",
      " Trần Đình Trường (1932 [1] - 6 tháng 5 năm 2012 [2]) là một doanh nhân gốc Việt tại Hoa Kỳ. . Ông là chủ nhân một số khách sạn tại New York và được báo chí Việt Nam coi là một trong những người Việt giàu nhất thế giới với tài sản trên 1 tỷ Mỹ kim[3][4]. . Theo tờ The New York Times, ông có tài sản khoảng 1 tỷ USD khi qua đời. . [5]\n",
      "\n",
      "Trần Đinh Trường sinh ra và lớn lên ở Kỳ Anh, Hà Tĩnh [1], sau di cư vào Nam.\n",
      "\n",
      "Trước năm 1975 tại Sài Gòn, ông hoạt động trong nghề vận tải đường biển và là chủ nhân .....\n",
      "\n",
      "------------------------------\n",
      "\n",
      "Document 4\n",
      "Link: https://vi.wikipedia.org/wiki/Tr%E1%BA%A7n_%C4%90%C3%ACnh_Tr%C6%B0%E1%BB%9Dng\n",
      "Sample content:\n",
      " TPO - Vừa qua, NXB Trẻ tổ chức trao giải cho tác giả của những cuốn sách bán chạy nhất trong năm 2018. . Nguyễn Nhật Ánh được giới cầm bút trong nước gọi là “nhà văn giàu nhất” với số lượng phát hành khổng lồ. . Người bí ẩn nhất là tác giả Tony Buổi Sáng chưa từng lộ diện.\n",
      "\n",
      "Theo định kỳ hàng năm, vào tháng Ba, NXB Trẻ tổ chức trao giải cho những tác giả có sách bán chạy nhất trong năm. . Năm nay, đứng đầu là Nguyễn Nhật Ánh với “Cho tôi xin một vé đi tuổi thơ” đã phát hành 400.000 bản và tái bản .....\n",
      "\n",
      "------------------------------\n",
      "\n"
     ]
    }
   ],
   "source": [
    "links, documents = ggsearch.search(question)\n",
    "for i in range(0,min(len(documents),5)):\n",
    "    print(\"Document\", i)\n",
    "    print(\"Link:\", links[i])\n",
    "    print(\"Sample content:\\n\", documents[i][:500],'.....')\n",
    "    print('\\n------------------------------\\n')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Find relevant passages from documents\n",
    "- Extract keywords (must-have words) from question\n",
    "- Filtering out documents that do not contain keywords from question\n",
    "- Spliting documents into passages\n",
    "- Filtering out passages that do not contain keywords from question\n",
    "- Ranking remaining passages based on N-gram matching"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Passage ranked 1 \n",
      "\n",
      "Bảng xếp hạng người giàu nhất trên sàn chứng khoán\n",
      "\r\n",
      " Bảng xếp hạng người giàu nhất Việt Nam\n",
      "\r\n",
      " Bảng xếp hạng các tỷ phú chứng khoán\n",
      "\r\n",
      " Bảng xếp hạng các tỷ phú Việt Nam\n",
      "\r\n",
      " Ai là người giàu nhất Việt Nam\n",
      "\r\n",
      " Ai là người giàu nhất sàn chứng khoán\n",
      "\r\n",
      " Tỷ phú đô la của Việt Nam\n",
      "\r\n",
      " Trần Đình Long trở thành tỷ phú đô la\n",
      "\r\n",
      " Tài sản của ông Phạm Nhật Vượng\n",
      "\r\n",
      " Tài sản của Trịnh Văn Quyết\n",
      "\r\n",
      " Tài sản của bà Phương Thảo\n",
      "\n",
      "------------------------------\n",
      "\n",
      "Passage ranked 2 \n",
      "\n",
      "VOV.VN - Ông Phạm Nhật Vượng là người giàu nhất Việt Nam với khối tài sản trị giá 6,7 tỷ USD, tương đương 152,9 ngàn tỷ đồng.\n",
      "\n",
      "------------------------------\n",
      "\n",
      "Passage ranked 3 \n",
      "\n",
      "Trước đó vào năm 2010, Phạm Nhật Vượng là người giàu nhất trên TTCK Việt Nam với số tài sản gần 15.800 tỷ đồng, giàu thứ nhì Việt Nam (theo xếp hạng trên sàn chứng khoán) năm 2007, 2008. [4] Ông đạt được vị trí này vào năm 2007, khi Công ty Vinpearl thuộc nhóm các công ty của Vincom niêm yết 100 triệu cổ phiếu trên sàn giao dịch chứng khoán Tp. Hồ Chí Minh.\n",
      "\n",
      "------------------------------\n",
      "\n",
      "Passage ranked 4 \n",
      "\n",
      "Ông Phạm Nhật Vượng tiếp tục được công nhận là người giàu nhất Việt Nam với tài sản định giá 6,6 tỷ USD, đứng thứ 239 thế giới, tăng 2,3 tỷ USD so với năm ngoái.\n",
      "\n",
      "------------------------------\n",
      "\n",
      "Passage ranked 5 \n",
      "\n",
      "“Ai là người giàu nhất Việt Nam?”. báo Tiền Phong. 27/1/2006\n",
      "\n",
      "------------------------------\n",
      "\n"
     ]
    }
   ],
   "source": [
    "passages = rel_ranking(question,documents)\n",
    "for i in range(0, min(len(passages),5)):\n",
    "    print('Passage ranked', i + 1,'\\n')\n",
    "    print(passages[i])\n",
    "    print('\\n------------------------------\\n')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Select top 40 paragraphs\n",
    "passages = passages[:40]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Using reading comprehend model (BERT) to extract answer for each passage"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "answers = reader.getPredictions(question,passages)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Reranking passages by answer score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "answers = [[passages[i], answers[i][0],answers[i][1]] for i in range(0,len(answers))]\n",
    "answers = [a for a in answers if a[1] != '']\n",
    "answers.sort(key = lambda x : x[2],reverse=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Most relevant passages with potential answer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Passage:  Ông Phạm Nhật Vượng tiếp tục được công nhận là người giàu nhất Việt Nam với tài sản định giá 6,6 tỷ USD, đứng thứ 239 thế giới, tăng 2,3 tỷ USD so với năm ngoái.\n",
      "Answer :  Phạm Nhật Vượng\n",
      "Score  :  0.9999549482428222\n",
      "\n",
      "\n",
      "Passage:  VOV.VN - Ông Phạm Nhật Vượng là người giàu nhất Việt Nam với khối tài sản trị giá 6,7 tỷ USD, tương đương 152,9 ngàn tỷ đồng.\n",
      "Answer :  Phạm Nhật Vượng\n",
      "Score  :  0.9999439551387689\n",
      "\n",
      "\n",
      "Passage:  Bảng xếp hạng người giàu nhất trên sàn chứng khoán\n",
      "\r\n",
      " Bảng xếp hạng người giàu nhất Việt Nam\n",
      "\r\n",
      " Bảng xếp hạng các tỷ phú chứng khoán\n",
      "\r\n",
      " Bảng xếp hạng các tỷ phú Việt Nam\n",
      "\r\n",
      " Ai là người giàu nhất Việt Nam\n",
      "\r\n",
      " Ai là người giàu nhất sàn chứng khoán\n",
      "\r\n",
      " Tỷ phú đô la của Việt Nam\n",
      "\r\n",
      " Trần Đình Long trở thành tỷ phú đô la\n",
      "\r\n",
      " Tài sản của ông Phạm Nhật Vượng\n",
      "\r\n",
      " Tài sản của Trịnh Văn Quyết\n",
      "\r\n",
      " Tài sản của bà Phương Thảo\n",
      "Answer :  Trần Đình Long\n",
      "Score  :  0.9999357839956173\n",
      "\n",
      "\n",
      "Passage:  Cho đến nay vẫn chưa ai thay thế được vị trí người giàu nhất Việt Nam của ông Phạm Nhật Vượng. Giá trị tài sản của ông Vượng đã tăng “chóng mặt” trong tháng 3/2019 này, tuy nhiên, con số có thể cao hơn cả thống kê của Forbes.\n",
      "Answer :  Phạm Nhật Vượng\n",
      "Score  :  0.9999150228723965\n",
      "\n",
      "\n",
      "Passage:  Trước đó vào năm 2010, Phạm Nhật Vượng là người giàu nhất trên TTCK Việt Nam với số tài sản gần 15.800 tỷ đồng, giàu thứ nhì Việt Nam (theo xếp hạng trên sàn chứng khoán) năm 2007, 2008. [4] Ông đạt được vị trí này vào năm 2007, khi Công ty Vinpearl thuộc nhóm các công ty của Vincom niêm yết 100 triệu cổ phiếu trên sàn giao dịch chứng khoán Tp. Hồ Chí Minh.\n",
      "Answer :  Phạm Nhật Vượng\n",
      "Score  :  0.9997637352104664\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "for i in range(0,min(5,len(answers))):\n",
    "    print(\"Passage: \", answers[i][0])\n",
    "    print(\"Answer : \", answers[i][1])\n",
    "    print(\"Score  : \", answers[i][2])\n",
    "    print('\\n')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Final answer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Final answer:  Phạm Nhật Vượng\n"
     ]
    }
   ],
   "source": [
    "print(\"Final answer: \", answers[0][1])"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
